package com.javacoo.junit.generator.model;

import java.lang.reflect.Method;
import java.util.List;

import com.javacoo.junit.generator.internal.VariableNames;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 方法处理上下文
 * <li></li>
 *
 * @author: duanyong@jccfc.com
 * @since: 2021/1/27 9:08
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MethodHandleContext {
    /**
     * 所属对象class对象
     */
    private Class sourceClass;
    /**
     * 所属对象class对象名称
     */
    private String className;
    /**
     * 是否是抽象类
     */
    private boolean abstractClass;
    /**
     * 方法对象
     */
    private Method method;
    /**
     * 方法名称
     */
    private String methodName;
    /**
     * 方法体
     */
    private StringBuilder methodBody;
    /**
     * 变量名对象
     */
    private VariableNames variableNames;
    /**
     * 依赖的对象集合
     */
    private List<String> dependenceClasses;
    /**
     * 是否是静态方法
     */
    private boolean isStatic;
    /**
     * 是否是私有方法
     */
    private boolean isPrivate;
    /**
     * 是否有返回对象
     */
    private boolean hasReturn;
    /**
     * 是否有参数
     */
    private boolean hasParams;
    /**
     * 异常名称
     */
    private String exception;
    /**
     * 调用参数
     */
    private String invokeParams;
    /**
     * 返回类型
     */
    private Class returnType;
    /**
     * 返回类型名称
     */
    private String returnTypeName;
    /**
     * 实现类对象
     */
    private Class instanceClass;
    /**
     * 实现类对象名称
     */
    private String instanceName;
    /**
     * 测试参数
     */
    private StringBuilder testParams;
    /**
     * 方法返回前缀
     */
    private String prefix;

}
